Home Blog 10 Best Performance Testing Tools for 2023 10 Best Performance Testing Tools for 2023 7 minutes read
April 25 2023 Reading Time: 7 minutes Introduction
Performance software testing is one of the crucial parts of ensuring the software or application has no issues under normal or heavy workloads. To carry out this process, developers or testers must use performance testing tools. They help them generate a testing scenario and automate the testing process.
Performance testing tools can also be used to assess the security of a system under high load conditions, helping to identify potential vulnerabilities and ensuring that the system is capable of withstanding attacks.
In today’s article, we select the 10 best performance testing tools and give you information about the features and capabilities of each tool.
1. WebLOAD
RadView Software has developed WebLOAD , which is a powerful tool that is particularly useful for enterprise-scale applications or products. With its ability to perform real-life environment testing, users can be confident in the performance of their systems. On WebLOAD, testers can conduct various types of performance testing such as load, stress, and endurance.
Features:
Stimulating massive traffic for testing to identify bottlenecks.
Providing detailed reports and analytic dashboards for root cause analytics.
Supporting hundreds of technologies stack.
Integrating with APM Tools and open-source software (Selenium and Jenkins).
Including native Javascript scripting and record capabilities.
Generating load testing on on-premise or your preferred cloud service provider (AWS, Azure, etc.).
Supporting several protocols like HTTP, HTTPS, SOAP, and REST.
2. LoadRunner
Load Runner is a product from Micro Focus, which serves to simplify the testing process of performance and load testing. Testers can detect unusual system behavior or performance issues via LoadRunner. It is considered one of the most popular performance testing tools.
Features:
Handling thousands of concurrent virtual users for heavy load testing.
Supporting a variety of protocols such as RIA, Web 2.0, Mobile, SAP, Oracle, Window Socket, Citrix, RTE, MS SQL Server, and Mail.
Supporting almost all the latest cutting-edge technologies stack and applications.
Having Autocorrelation Engine, which quickly spots the performance issue.
Creating flexible and scalable test scenarios with minimal hardware.
3. Apache JMeter
The founders originally created this open-source tool for testing web applications. Like any testing tool, Apache JMeter serves the purpose of testing system behavior and identifying performance problems.
Features:
Developing an application that is completely pure Java.
Supporting a wide range of protocols like SOAP, REST, Web 2.0, LDAP, TCP, etc.
Generating heavy load (concurrent users or transactions) on web applications for real-world test scenarios.
Allowing developers to write custom code on the application to carry out the challenging test.
Featuring distributed testing function, which means multiple devices can simultaneously make heavy loads.
Providing graphical and dynamic reports which are helpful for the tester to analyze.
4. NeoLoad
The creators made NeoLoad for testing both web and mobile applications. The tool allows testers to stimulate user activities to test the system’s performance under a high volume of usage. In addition, this is one of the performance testing tools that provide a good platform for Agile and DevOps teams as it integrates with the CI/CD pipeline.
Features:
Integrating with DevOps tools such as Jenkins, Git, and Locker for testing automation.
Offering a range of APIs and plugins for the tool’s functionality extension.
Using GUI, which allows users to conduct tests without coding.
Providing real-time test results with a dynamic dashboard.
Integrating with container orchestrators like Kubernetes, OpenShift, AKS, EKS, and GKE to automatically provision load testing infrastructure on demand without requiring manual scripts or resource connections.
5. StressStimulus
StressStimulus , designed by Microsoft Dynamic, is considered one of the top performance testing tools available in the market for web, mobile, and Enterprise applications. By archiving and duplicating app scenarios to emulate usage patterns on system infrastructure, the tool is able to accurately pinpoint performance bottlenecks. Additionally, under heavy traffic loads, it can isolate page speed issues, ensuring that all aspects of the system are thoroughly tested.
Features:
Using end-to-end Test Wizard which provides a friendly UI for users and saves time for the learning phase of beginners.
Reflecting the script attributes and the configuration of the UI setting with StressStimulus XML scripting
Supporting protocols and technologies such as HTTP, HTTPS, AJAX, SOAP, WCF, binary WCF, and XML over HTTP.
Allowing users to export scripts from test scenarios record to Virtual Studio so that users can continue testing in the same environment.
6. LoadUI Pro
LoadUI Pro is a commercial load-testing tool developed by Smartbear software. Users can perform load tests on web services, RESTful APIs, or network-based applications (Databases, Microservices).
Features:
Creating quick test scenarios to test the speed and scalability of APIs
Supporting most operating systems, including Windows, Linux, and Mac OS.
Conducting comprehensive APIs testing before deployment to give deep insights into real-time APIs
Allowing users to execute several tests simultaneously
Generating instant analysis and reporting without pausing the current testing
7. SmartMeter.io
As a commercial tool developed by TNG Technology Consulting GmbH, SmartMeter.io offers enterprise-level features for load and performance testing. Additionally, the tool is built on top of the Apache JMeter framework, which it enhances with additional features and capabilities.
Features:
Equipping Recorder features to help users create testing scenarios without scripts. A Proxy or browser plugin is not required.
Supporting these protocols: HTTP, JDBC, JMS, TCP, and HTTPS
Generating detailed reports, including evaluated acceptance criteria and comparison tool
Supporting distributed testing and continuous integration
IBM develops Rational Performance Tester (RPT) to help software testers test the performance and scalability of web and server applications. The tool is easy to use and allows users to execute tests quickly.
Features:
Supporting many protocols, including HTTP, SAP, Siebel, SIP, TCP Socket, and Citrix
Working as a powerful analysis tool because it pinpoints the root cause of bottleneck issues
Modeling efficiently and emulating various users while minimizing data usage
Featuring advanced test scenarios and functions to insert custom Java code
9. Gatling
Gatling is an open-source performance testing solution based on Scala, Akka, and Netty. The tool allows users to simulate thousands of users visiting a website or web application and measure the performance under a heavy load.
Features:
Providing a high-level Domain Specific Language (DSL) for writing performance Load-Test-As-Code.
Integrating with your CI/CD pipeline to serve the DevOps approach.
Featuring advanced metrics to analyze your tests: run comparisons, TCP connection metrics, DNS resolutions, and generators’ monitoring.
Silk Performer is a load and stress testing tool for enterprise-scale applications. You can create thousands or millions of virtual users to test the application’s performance.
Features:
Allowing testers to carry out tests without managing complicated infrastructure with CloudBrust
Supporting a wide range of application protocols and technologies such as HTTP, TCP/IP, LDAP, SOAP, .NET, etc.
Having 50 global locations where you can choose to perform tests.
Testers often pick the most suitable one depending on the project requirement, technologies stack, and budget. To help you distinguish and make the right decision, we make a comparison table with a general overview and features of these performance testing tools.
Tool Name
License Model
Protocol Support
Scripting Language
Test Result Analysis
Integration with Other Tools
Supported Operating Systems
WebLOAD
Commercial
HTTP/HTTPS, WebSocket, SAP, Oracle Forms
JavaScript, Java
Advanced Analytics, Dashboard, Reporting
Jenkins, CI/CD, Selenium, ALM
Windows, Linux, Mac OS
LoadRunner
Commercial
HTTP/HTTPS, FTP, SMTP, DNS, LDAP, Citrix, SAP
C, Java, VBScript
Built-in Analysis, Dashboard, and Reporting
CI/CD, ALM, Git, Jenkins
Windows
JMeter
Open-Source
HTTP/HTTPS, FTP, JDBC, SOAP, LDAP, TCP, JMS
Java, Groovy
Built-in Analysis, Dashboard, and Reporting
Maven, Jenkins, CI/CD, ALM
Windows, Linux, Mac OS
NeoLoad
Commercial
HTTP/HTTPS, WebSocket, SAP, Oracle Forms, Citrix
JavaScript
Advanced Analytics, Dashboard, and Reporting
Jenkins, CI/CD, Selenium, ALM
Windows, Linux, Mac OS
StresStimulus
Commercial
HTTP/HTTPS, WebSocket, WebSockets, HTTP/2
C#, VB.NET
Advanced Analytics, Dashboard, and Reporting
Visual Studio, Jenkins, CI/CD
Windows
LoadUI Pro
Open-Source
REST, SOAP, HTTP, JMS, RabbitMQ, TCP, UDP
Groovy, JavaScript
Advanced Analytics, Dashboard, and Reporting
Jenkins, ALM, Git, CI/CD
Windows, Linux, Mac OS
SmartMeter.io
Commercial
HTTP/HTTPS, WebSocket, JMS, RabbitMQ, AMQP, CoAP, MQTT
Java, Groovy
Advanced Analytics, Dashboard, and Reporting
Jenkins, CI/CD, Selenium, Git
Windows, Linux, Mac OS
Rational Performance Tester
Commercial
HTTP/HTTPS, SMTP, FTP, TCP, Citrix, SAP
Java
Built-in Analysis, Dashboard, and Reporting
CI/CD, ALM, Jenkins
Windows
Gatling
Open-Source
HTTP/HTTPS, WebSocket, JMS, JDBC, MQTT
Scala, Java
Advanced Analytics, Dashboard, and Reporting
Jenkins, CI/CD, Maven, ALM
Windows, Linux, Mac OS
Silk Performer
Commercial
HTTP/HTTPS, SOAP, SMTP, POP3, IMAP, DNS, Citrix
C, Java, VBScript
Built-in Analysis, Dashboard, and Reporting
CI/CD, ALM, Jenkins
Windows
Conclusion
Using performance testing tools is a must to carry out the testing process smoothly. There are many different tools available in the market. As a software tester, you should learn and practice as many tools as possible.
If you’re looking to learn more about performance testing tools and techniques, be sure to check out CyStack’s complete guide to performance testing ! We hope our insights will help you explore the world of performance testing and discover the best tools and practices for your testing needs.
CyStack blog Interviews, tips, guides, industry best practices, and news.
View all
Sign up for our newsletter Be the first to know about releases and industry news and insights.
Stay in touch Go deeper and get the full story with our newsletter.
"<!DOCTYPE html>\n<html>\n <head>\n <title>Sign in ・ Cloudflare Access</title>\n <meta charset=\"utf-8\" />\n <meta name=\"robots\" content=\"noindex\" />\n <meta name=\"viewport\" content=\"initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width\" />\n <article id=\"data\"\n data-auto-redirect-to-identity=\"false\"\n data-auto-redirect-url=\"\"\n data-message=\"\">\n </article>\n <style>*{-webkit-box-sizing:inherit;box-sizing:inherit}body,html{min-height:100vh}html{background:#f7f7f8;text-align:center;text-rendering:optimizeLegibility;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";line-height:1.5;word-wrap:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;background:#003d7b;color:#4f566b}.Content,body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}body{padding:32px 8px;margin:0}.Content{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:32px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (max-width:768px){.Content{padding:0;margin:32px 0}}.AuthBox{max-width:100%;background:#fff;border:1px solid #eaebeb;-webkit-box-shadow:0 4px 8px rgba(146,151,155,.15);box-shadow:0 4px 8px rgba(146,151,155,.15);padding-top:2em;width:36em}.base_AccessLogo{margin-bottom:1em}.base_TeamsLogo{padding-top:1em;padding-bottom:2em}@media only screen and (max-width:420px) and (pointer:coarse){.base_AccessLogo{margin-top:1em}.base_TeamsLogo{padding:1em 0}}.Content{margin-top:8px}.AuthBox{border-radius:5px;margin-top:0;margin-bottom:0}.AuthBox .AuthBox-error-box-footer{border-radius:5px 0 .5em .5em;background:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.15)}.AuthBox .AuthBoxRow--name{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.AuthBox-RequestCode{border-bottom-left-radius:5px;border-bottom-right-radius:5px;padding-bottom:2.5em}.AuthBox-RequestCode__idpsExist{background:#f7f7f8}.AuthBox-error-box-footer{border:0;border-radius:5px;margin-bottom:2rem}.ErrorBlock,.ErrorBlock-icon{display:-webkit-box;display:-ms-flexbox;display:flex}.ErrorBlock-icon{width:2.25em;height:2.25em;margin-right:1.25em}.ErrorBlock-icon>svg{display:block;height:100%;width:100%}.ErrorBlock-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.ErrorBlock-header-text{font-size:1.4em;margin-bottom:.5em}.JSONBlock{display:block;font-size:.9em;margin:0;padding:1.5em;font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace;overflow-x:scroll;-webkit-overflow-scrolling:touch;color:rgba(0,0,0,.6)}.AuthBox-text{color:#4a4a4a;font-size:1.25em;font-weight:600;padding-top:1em;margin-bottom:24px}.AuthServiceLogin .AuthServiceLogin-row{padding-bottom:1em}.AuthFormLogin-row{text-align:left;margin:auto;max-width:22em;padding:1em 8px 0}.Footer-text,.Header-text{padding:3em 1em 1em;font-size:12px;line-height:18px}.Footer-text{padding:1em}.Footer-text span{white-space:pre-line}label{display:block;font-weight:600;margin-bottom:.5em}.Button{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;cursor:pointer;text-decoration:none;font:inherit;color:#fff;background:#333;padding:.5em 0;border:0;margin:0;border-radius:5px}.Button.Button-uses-org-theme-accent-color{background-color:#2c7cb0;padding:0 8px;width:100%}.Button:hover{-webkit-box-shadow:inset 0 0 0 999em rgba(255,255,255,.2);box-shadow:inset 0 0 0 999em rgba(255,255,255,.2)}.Button.Button-is-juicy{border-radius:5px;padding-top:.75em;padding-bottom:.75em;max-width:14em;font-weight:300}.Button.Button-is-block{display:block;margin:auto}.Button.Button-is-auth{background-color:#f7f7f8;border:1px solid #d5d7d8;color:inherit;text-align:left;min-height:55px;margin:0 3.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:inherit;flex-wrap:inherit;padding-left:.5em}.Button.Button-is-auth .Button-auth-service-icon{width:2.8em;height:auto;padding:.5em;color:#1d1f20;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.Button.Button-is-auth .Button-auth-service-icon>svg{fill:currentColor;display:block;min-width:25px;width:25px;height:25px}.Button.Button-uses-org-theme-accent-color{margin:0;max-width:unset}.AuthBox-messages{max-width:36em}.Button.Button-is-auth .Button-auth-service-icon,.Message,.RayID{display:-webkit-box;display:-ms-flexbox;display:flex}.Message{-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:.9em;overflow:hidden;margin-bottom:1em;border-radius:5px;padding:.5em 1em;text-align:left}.Message svg{height:1em;width:1em;margin-right:.5em}.Message.Message-is-warning{background:#fcf0f2;color:#711423;border:1px solid #f3bac3}.Message.Message-is-success{background:#a6eac9;color:#1c422b;border:1px solid #b0ddc2}.RayID{padding:0;text-align:center;background:#dfbd9f}.RayID.RayID-Title,.RayID.RayID-Value{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;padding:1em;display:inline-block}.RayID.RayID-Value{background:#e7c9af;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace}.StandardInput{position:relative;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-block;text-align:left;font:inherit;color:\"#333333\";padding:.5em 1em;border:1px solid #cacaca;margin:0;border-radius:5px}.StandardInput:focus{outline:0;border-color:#777}.StandardInput.StandardInput-is-block{display:block;font-size:1em;width:100%}.StandardInput.StandardInput-is-code{font-family:Monaco,\"Bitstream Vera Sans Mono\",\"Lucida Console\",Terminal,monospace}.StandardInput.StandardInput-is-entry-code{font-size:20px}.StandardInput:-moz-placeholder,.StandardInput::-webkit-input-placeholder{font-family:inherit}.OrgAvatarLink{display:block;text-decoration:none;color:inherit}.OrgAvatarLink-logo img{margin-bottom:.5em}.App-name,.OrgAvatarLink-title{text-align:center;font-weight:200}.OrgAvatarLink-title{color:#4e5255;font-size:.8em}.App-name{font-size:1.5em}@media screen and (max-width:650px){.Button.Button-is-auth{margin:0 8px}.AuthFormLogin .AuthFormLogin-row{width:auto}.Content{margin:8px 0}}</style>\n\n <!-- URL polyfill for IE11 -->\n <script>!function(e){\"use strict\";function t(t){return!!t&&(\"Symbol\"in e&&\"iterator\"in e.Symbol&&\"function\"==typeof t[Symbol.iterator]||!!Array.isArray(t))}function n(e){return\"from\"in Array?Array.from(e):Array.prototype.slice.call(e)}!function(){var r,a=e.URL;try{if(a){if(\"searchParams\"in(r=new e.URL(\"http://example.com\")))return;\"href\"in r||(r=void 0)}}catch(e){}function i(e){var t=\"\",n=!0;return e.forEach(function(e){var r=encodeURIComponent(e.name),a=encodeURIComponent(e.value);n||(t+=\"&\"),t+=r+\"=\"+a,n=!1}),t.replace(/%20/g,\"+\")}function o(e,t){var n=e.split(\"&\");t&&-1===n[0].indexOf(\"=\")&&(n[0]=\"=\"+n[0]);var r=[];n.forEach(function(e){if(0!==e.length){var t=e.indexOf(\"=\");if(-1!==t)var n=e.substring(0,t),a=e.substring(t+1);else n=e,a=\"\";n=n.replace(/\\+/g,\" \"),a=a.replace(/\\+/g,\" \"),r.push({name:n,value:a})}});var a=[];return r.forEach(function(e){a.push({name:decodeURIComponent(e.name),value:decodeURIComponent(e.value)})}),a}function u(e){var r=this;this._list=[],null==e||(e instanceof u?this._list=o(String(e)):\"object\"==typeof e&&t(e)?n(e).forEach(function(e){if(!t(e))throw TypeError();var a=n(e);if(2!==a.length)throw TypeError();r._list.push({name:String(a[0]),value:String(a[1])})}):\"object\"==typeof e&&e?Object.keys(e).forEach(function(t){r._list.push({name:String(t),value:String(e[t])})}):(\"?\"===(e=String(e)).substring(0,1)&&(e=e.substring(1)),this._list=o(e))),this._url_object=null,this._setList=function(e){a||(r._list=e)};var a=!1;this._update_steps=function(){a||(a=!0,r._url_object&&(\"about:\"===r._url_object.protocol&&-1!==r._url_object.pathname.indexOf(\"?\")&&(r._url_object.pathname=r._url_object.pathname.split(\"?\")[0]),r._url_object.search=i(r._list),a=!1))}}function l(e,t){var n=0;this.next=function(){if(n>=e.length)return{done:!0,value:void 0};var r=e[n++];return{done:!1,value:\"key\"===t?r.name:\"value\"===t?r.value:[r.name,r.value]}}}function c(t,n){if(!(this instanceof e.URL))throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator.\");n&&(t=function(){if(r)return new a(t,n).href;var e;try{var i;if(\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini)?((e=document.createElement(\"iframe\")).style.display=\"none\",document.documentElement.appendChild(e),i=e.contentWindow.document):document.implementation&&document.implementation.createHTMLDocument?i=document.implementation.createHTMLDocument(\"\"):document.implementation&&document.implementation.createDocument?((i=document.implementation.createDocument(\"http://www.w3.org/1999/xhtml\",\"html\",null)).documentElement.appendChild(i.createElement(\"head\")),i.documentElement.appendChild(i.createElement(\"body\"))):window.ActiveXObject&&((i=new window.ActiveXObject(\"htmlfile\")).write(\"<head></head><body></body>\"),i.close()),!i)throw Error(\"base not supported\");var o=i.createElement(\"base\");o.href=n,i.getElementsByTagName(\"head\")[0].appendChild(o);var u=i.createElement(\"a\");return u.href=t,u.href}finally{e&&e.parentNode.removeChild(e)}}());var i=function(e){if(r)return new a(e);var t=document.createElement(\"a\");return t.href=e,t}(t||\"\"),l=function(){if(!(\"defineProperties\"in Object))return!1;try{var e={};return Object.defineProperties(e,{prop:{get:function(){return!0}}}),e.prop}catch(e){return!1}}()?this:document.createElement(\"a\"),c=new u(i.search?i.search.substring(1):null);function s(){var e=i.href.replace(/#$|\\?$|\\?(?=#)/g,\"\");i.href!==e&&(i.href=e)}function f(){c._setList(i.search?o(i.search.substring(1)):[]),c._update_steps()}return c._url_object=l,Object.defineProperties(l,{href:{get:function(){return i.href},set:function(e){i.href=e,s(),f()},enumerable:!0,configurable:!0},origin:{get:function(){return\"origin\"in i?i.origin:this.protocol+\"//\"+this.host},enumerable:!0,configurable:!0},protocol:{get:function(){return i.protocol},set:function(e){i.protocol=e},enumerable:!0,configurable:!0},username:{get:function(){return i.username},set:function(e){i.username=e},enumerable:!0,configurable:!0},password:{get:function(){return i.password},set:function(e){i.password=e},enumerable:!0,configurable:!0},host:{get:function(){var e={\"http:\":/:80$/,\"https:\":/:443$/,\"ftp:\":/:21$/}[i.protocol];return e?i.host.replace(e,\"\"):i.host},set:function(e){i.host=e},enumerable:!0,configurable:!0},hostname:{get:function(){return i.hostname},set:function(e){i.hostname=e},enumerable:!0,configurable:!0},port:{get:function(){return i.port},set:function(e){i.port=e},enumerable:!0,configurable:!0},pathname:{get:function(){return\"/\"!==i.pathname.charAt(0)?\"/\"+i.pathname:i.pathname},set:function(e){i.pathname=e},enumerable:!0,configurable:!0},search:{get:function(){return i.search},set:function(e){i.search!==e&&(i.search=e,s(),f())},enumerable:!0,configurable:!0},searchParams:{get:function(){return c},enumerable:!0,configurable:!0},hash:{get:function(){return i.hash},set:function(e){i.hash=e,s()},enumerable:!0,configurable:!0},toString:{value:function(){return i.toString()},enumerable:!1,configurable:!0},valueOf:{value:function(){return i.valueOf()},enumerable:!1,configurable:!0}}),l}if(Object.defineProperties(u.prototype,{append:{value:function(e,t){this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},delete:{value:function(e){for(var t=0;t<this._list.length;)this._list[t].name===e?this._list.splice(t,1):++t;this._update_steps()},writable:!0,enumerable:!0,configurable:!0},get:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return this._list[t].value;return null},writable:!0,enumerable:!0,configurable:!0},getAll:{value:function(e){for(var t=[],n=0;n<this._list.length;++n)this._list[n].name===e&&t.push(this._list[n].value);return t},writable:!0,enumerable:!0,configurable:!0},has:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return!0;return!1},writable:!0,enumerable:!0,configurable:!0},set:{value:function(e,t){for(var n=!1,r=0;r<this._list.length;)this._list[r].name===e?n?this._list.splice(r,1):(this._list[r].value=t,n=!0,++r):++r;n||this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},entries:{value:function(){return new l(this._list,\"key+value\")},writable:!0,enumerable:!0,configurable:!0},keys:{value:function(){return new l(this._list,\"key\")},writable:!0,enumerable:!0,configurable:!0},values:{value:function(){return new l(this._list,\"value\")},writable:!0,enumerable:!0,configurable:!0},forEach:{value:function(e){var t=arguments.length>1?arguments[1]:void 0;this._list.forEach(function(n,r){e.call(t,n.value,n.name)})},writable:!0,enumerable:!0,configurable:!0},toString:{value:function(){return i(this._list)},writable:!0,enumerable:!1,configurable:!0}}),\"Symbol\"in e&&\"iterator\"in e.Symbol&&(Object.defineProperty(u.prototype,e.Symbol.iterator,{value:u.prototype.entries,writable:!0,enumerable:!0,configurable:!0}),Object.defineProperty(l.prototype,e.Symbol.iterator,{value:function(){return this},writable:!0,enumerable:!0,configurable:!0})),a)for(var s in a)a.hasOwnProperty(s)&&\"function\"==typeof a[s]&&(c[s]=a[s]);e.URL=c,e.URLSearchParams=u}(),function(){if(\"1\"!==new e.URLSearchParams([[\"a\",1]]).get(\"a\")||\"1\"!==new e.URLSearchParams({a:1}).get(\"a\")){var r=e.URLSearchParams;e.URLSearchParams=function(e){if(e&&\"object\"==typeof e&&t(e)){var a=new r;return n(e).forEach(function(e){if(!t(e))throw TypeError();var r=n(e);if(2!==r.length)throw TypeError();a.append(r[0],r[1])}),a}return e&&\"object\"==typeof e?(a=new r,Object.keys(e).forEach(function(t){a.set(t,e[t])}),a):new r(e)}}}()}(self);</script>\n <script>\"use strict\";var get=function(t){return Array.prototype.slice.call(document.querySelectorAll(t))},addFragmentToURLState=function(t){if(!t)return t;var e=new URL(t);if(e&&\"\"!==fragment&&fragment.length<100){var a=window.btoa(JSON.stringify({fragment:\"#\"===fragment[0]?fragment:\"#\".concat(fragment)})),r=e.searchParams.get(\"state\"),n=e.searchParams.get(\"RelayState\");r?e.searchParams.set(\"state\",\"\".concat(r,\".\").concat(a)):n&&e.searchParams.set(\"RelayState\",\"\".concat(n,\".\").concat(a))}return e.toString()},fragment=window.location.hash||\"\",article=document.querySelector(\"#data\"),dset=article.dataset,autoRedirectToIdentity=\"true\"===dset.autoRedirectToIdentity,autoRedirectURL=addFragmentToURLState(dset.autoRedirectUrl),message=dset.message;autoRedirectURL&&autoRedirectToIdentity&&(message||(window.location=autoRedirectURL));</script>\n </head>\n\n <body>\n <div class=\"base_AccessLogo\">\n <svg width=\"165\" height=\"50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" src=\"../images/access_logo_light.svg\"><path d=\"M21.292 15.556h-7.816C17.168 6.435 26.111 0 36.556 0c13.747 0 24.89 11.143 24.89 24.89 0 13.746-11.143 24.89-24.89 24.89-10.445 0-19.388-6.436-23.08-15.557h7.816c3.145 5.132 8.805 8.556 15.265 8.556 9.88 0 17.889-8.009 17.889-17.89C54.446 15.01 46.436 7 36.556 7c-6.46 0-12.12 3.424-15.264 8.556zm-11.958 14l-3.112-3.11H45.89c1.386 0 2.08 1.674 1.1 2.655l-6.222 6.222-2.2-2.2 3.567-3.567H9.334zM32.346 16.66l2.2-2.2 6.222 6.223c.98.98.286 2.655-1.1 2.655H3.11L0 20.226h35.913l-3.567-3.567zM84.109 15.383c1.699 0 2.411-.97 2.578-2.123h2.063c-.243 2.214-1.654 3.943-4.702 3.943-2.851 0-4.884-2.078-4.884-5.309 0-3.185 2.063-5.293 4.884-5.293 3.003 0 4.474 1.698 4.702 3.959h-2.063c-.182-1.153-.925-2.14-2.593-2.14-1.593 0-2.821 1.335-2.806 3.49 0 2.183 1.213 3.473 2.82 3.473zm5.612 1.729V6.343h2.078v10.769H89.72zm6.917-7.507c2.305 0 3.822 1.531 3.822 3.76 0 2.23-1.517 3.823-3.822 3.823-2.276 0-3.808-1.517-3.808-3.746 0-2.245 1.532-3.837 3.808-3.837zm0 1.713c-1.032 0-1.715.834-1.715 2.093 0 1.23.683 2.063 1.715 2.063 1.061 0 1.713-.834 1.713-2.063 0-1.26-.652-2.093-1.713-2.093zm9.494-1.638h2.078v7.432h-2.002l-.061-1.092c-.425.698-1.153 1.168-2.184 1.168-1.699 0-2.563-1.198-2.563-2.73V9.68h2.092v4.292c0 .865.441 1.41 1.275 1.41.773 0 1.365-.621 1.365-1.546V9.68zm8.631-3.337h2.077v10.769h-2.017l-.046-1.077c-.439.668-1.197 1.153-2.305 1.153-1.881 0-3.246-1.365-3.246-3.7 0-2.276 1.29-3.883 3.353-3.883 1.092 0 1.774.439 2.184 1.09V6.344zm-1.775 9.1c1.152 0 1.775-.97 1.775-1.804v-.47c0-.895-.653-1.82-1.76-1.82-.986 0-1.668.818-1.668 2.078 0 1.228.652 2.017 1.653 2.017zm5.824-6.37c0-1.714 1.213-2.927 3.124-2.927.413.003.825.05 1.229.137l-.076 1.743c-.182-.075-.516-.136-.834-.136-.925 0-1.365.5-1.365 1.259v.531h2.154v1.653h-2.155v5.779h-2.076v-5.78h-1.063V9.68h1.062v-.607zm5.369-2.73h2.078v10.769h-2.078V6.343zm6.553 3.262c2.229 0 3.352 1.197 3.352 3.108v4.399h-1.926l-.046-1.016c-.288.47-.986 1.092-2.427 1.092-1.608 0-2.472-.804-2.472-2.048 0-1.804 1.851-2.336 3.867-2.336h.987v-.257c0-.835-.471-1.365-1.396-1.365-.788 0-1.304.379-1.38 1.03h-1.881c.137-1.652 1.426-2.608 3.321-2.608h.001zm-.41 6.081c1.092 0 1.745-.683 1.745-1.274v-.47h-1.078c-1.152 0-1.759.303-1.759.97 0 .47.364.774 1.092.774zm9.055-6.082c.167 0 .379.015.47.061l-.015 2.033c-.121-.046-.228-.077-.515-.077-.941 0-1.699.591-1.821 1.654v3.837h-2.078V9.68h2.002l.046 1.213c.349-.758.94-1.29 1.911-1.29zm7.887 3.853v.394h-5.232c.151 1.137.819 1.714 1.789 1.714 1.002 0 1.366-.516 1.487-.91h1.926c-.243 1.289-1.274 2.532-3.519 2.532-2.26 0-3.685-1.562-3.685-3.776 0-2.245 1.562-3.807 3.715-3.807 2.261 0 3.519 1.578 3.519 3.853zm-3.503-2.305c-.835 0-1.501.47-1.699 1.5h3.261c-.136-1.06-.713-1.5-1.562-1.5zM91.91 42l-1.41-4.287h-7.972L81.118 42h-3.972l7.05-19.742h4.634L95.88 42h-3.97zm-8.318-7.424h5.842l-2.906-8.806-2.936 8.806zm19.189 7.569c-4.232 0-6.936-2.964-6.936-7.166 0-4.26 2.907-7.223 6.992-7.223 4.203 0 6.217 2.532 6.563 5.669h-3.799c-.23-1.353-1.007-2.417-2.648-2.417-1.841 0-3.136 1.38-3.136 3.97 0 2.533 1.236 3.915 3.108 3.915 1.726 0 2.446-1.036 2.675-2.36h3.8c-.374 3.08-2.418 5.612-6.619 5.612zm14.496 0c-4.23 0-6.935-2.964-6.935-7.166 0-4.26 2.906-7.223 6.994-7.223 4.201 0 6.216 2.532 6.561 5.669h-3.799c-.231-1.353-1.007-2.417-2.648-2.417-1.841 0-3.136 1.38-3.136 3.97 0 2.533 1.237 3.915 3.107 3.915 1.727 0 2.446-1.036 2.677-2.36h3.799c-.375 3.08-2.417 5.612-6.619 5.612h-.001zm21.289-7.08v.748h-9.928c.288 2.159 1.554 3.252 3.396 3.252 1.899 0 2.59-.978 2.82-1.726h3.656c-.462 2.446-2.418 4.806-6.678 4.806-4.288 0-6.992-2.964-6.992-7.166 0-4.26 2.963-7.223 7.05-7.223 4.288 0 6.676 2.992 6.676 7.31zm-6.647-4.374c-1.583 0-2.849.892-3.224 2.849h6.188c-.259-2.014-1.353-2.85-2.964-2.85zm19.85 7.31c.029 2.619-2.36 4.144-6.13 4.144-3.971 0-5.986-1.612-6.015-4.547l3.367.029c.087 1.15.864 1.784 2.59 1.784 1.67 0 2.389-.49 2.36-1.295 0-2.648-8.029-.49-8.029-6.188 0-2.59 2.302-4.172 6.015-4.172 3.597 0 5.612 1.669 5.64 4.46h-3.424c-.087-1.151-.864-1.727-2.245-1.727-1.496 0-2.158.518-2.158 1.324 0 2.59 8.029.317 8.029 6.188zm13.23 0c.03 2.619-2.359 4.144-6.129 4.144-3.971 0-5.986-1.612-6.015-4.547l3.367.029c.086 1.15.864 1.784 2.591 1.784 1.669 0 2.387-.49 2.359-1.295 0-2.648-8.029-.49-8.029-6.188 0-2.59 2.302-4.172 6.015-4.172 3.597 0 5.612 1.669 5.641 4.46h-3.425c-.086-1.151-.863-1.727-2.245-1.727-1.496 0-2.158.518-2.158 1.324 0 2.59 8.029.317 8.029 6.188h-.001z\" fill=\"#fff\"/></svg>\n </div>\n <div class=\"Content\">\n\n <div class=\"AuthBox\">\n <div class=\"AuthBox-body\">\n <a class=\"OrgAvatarLink\" href=''>\n <div class=\"OrgAvatarLink-logo\">\n <img height=50 src=\"https://s.cystack.net/resource/cystack/CyStack-Black.svg\" style=\"display:none;\" onload=\"this.style.display=''\"></img>\n </div>\n <div class=\"OrgAvatarLink-title\">\n CyStack\n </div>\n </a>\n <div class=\"AuthBox-App\">\n <div class=\"App-name\">\n CyStack Blog\n </div>\n\n </div>\n <div class=\"AuthBox-Normal\">\n <div class=\"AuthBox-text\">\n Sign in with:\n </div>\n <div class=\"AuthServiceLogin\">\n <div class=\"AuthServiceLogin-row AuthServiceLogin-row-is-only\">\n <a class=\" Button Button-is-block Button-is-auth js-idp\" data-idp=\"Google\" title=\"Google ・ CyStack\"\n href=\"https://accounts.google.com/o/oauth2/auth?client_id=306229843697-8ot9f4phmrpr35gahbe3cvf5agj6nhs6.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fcystack.cloudflareaccess.com%2Fcdn-cgi%2Faccess%2Fcallback&response_type=code&state=8b17dbfb36a87fcd8b939b7a11e7c73a9f737a24863ce9fe98a2a15aa09ec114.JTdCJTIyaWF0JTIyJTNBMTc2MDYwNjYyNCUyQyUyMmF1dGhEb21haW4lMjIlM0ElMjJjeXN0YWNrLmNsb3VkZmxhcmVhY2Nlc3MuY29tJTIyJTJDJTIyaG9zdG5hbWUlMjIlM0ElMjJibG9nLmN5c3RhY2sub3JnJTIyJTJDJTIycmVkaXJlY3RVUkwlMjIlM0ElMjIlMkZ3cC1qc29uJTJGcmFua21hdGglMkZ2MSUyRmdldEhlYWQlM0Z1cmwlM0RodHRwcyUzQSUyNTJGJTI1MkZibG9nLmN5c3RhY2sub3JnJTI1MkZibG9nJTI1MkYyMDIzJTI1MkYwNCUyNTJGMjUlMjUyRnBlcmZvcm1hbmNlLXRlc3RpbmctdG9vbHMlMjUyRiUyMiUyQyUyMmF1ZCUyMiUzQSUyMmQwOGNjMzEyZDM1ODAyNjhkZjNhY2EyNGNiNGY0Yjc0NmFhNTU4ZWQwYTM4NGNiNGQ3M2RkNzY4ZWIwMjAxZjclMjIlMkMlMjJpc1NhbWVTaXRlTm9uZUNvbXBhdGlibGUlMjIlM0F0cnVlJTJDJTIyaXNJRFBUZXN0JTIyJTNBZmFsc2UlMkMlMjJpc1JlZnJlc2glMjIlM0FmYWxzZSUyQyUyMm5vbmNlJTIyJTNBJTIybnplVDFDWWluYWwzOUhPak4lMjIlMkMlMjJpZHBJZCUyMiUzQSUyMjg5MzU1M2Y2LTIwNWMtNGNjYy05YzFlLWMzMDk0OGU3Zjg1YyUyMiUyQyUyMnNlcnZpY2VfdG9rZW5faWQlMjIlM0ElMjIwMzQzNGU2Yy1jMzViLTRhZTMtYTg2ZS1iZjY0ZjkzYzRiYjglMjIlMkMlMjJzZXJ2aWNlX3Rva2VuX3N0YXR1cyUyMiUzQXRydWUlMkMlMjJhdXRoX3N0YXR1cyUyMiUzQSUyMk5PTkUlMjIlMkMlMjJpc193YXJwJTIyJTNBZmFsc2UlMkMlMjJpc19nYXRld2F5JTIyJTNBZmFsc2UlMkMlMjJtdGxzX2F1dGglMjIlM0ElN0IlMjJjZXJ0X2lzc3Vlcl9za2klMjIlM0ElMjIlMjIlMkMlMjJjZXJ0X3ByZXNlbnRlZCUyMiUzQWZhbHNlJTJDJTIyY2VydF9zZXJpYWwlMjIlM0ElMjIlMjIlMkMlMjJjZXJ0X2lzc3Vlcl9kbiUyMiUzQSUyMiUyMiUyQyUyMmF1dGhfc3RhdHVzJTIyJTNBJTIyTk9ORSUyMiU3RCUyQyUyMmFwcFNlc3Npb25IYXNoJTIyJTNBJTIyYTA0N2NiYjQ4YTc2YmUzMWZlNDZmNmQ0OTdkY2U5ZTFmYmE4ODNjNjBmZmUxMzEyZjZiNWVkMjc2N2Q2ZTdjMCUyMiU3RA%253D%253D&scope=email+profile+openid\" accesskey=\"1\" id=\"idp1\">\n <div class=\"Button-auth-service-icon\"><svg viewBox=\"0 0 256 262\"><path d=\"M13.925 71.947C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602C35.393 231.798 79.49 261.1 130.55 261.1c35.248 0 64.839-11.605 86.453-31.622 24.659-22.774 38.875-56.282 38.875-96.027 0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82 10.59-31.477 39.891-54.251 74.414-54.251 24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947z\"></path></svg></div>\n <div class=\"AuthBoxRow--name\">Google ・ CyStack</div>\n </a>\n </div>\n </div>\n <div class=\"AuthBox-RequestCode AuthBox-RequestCode__idpsExist\">\n <div class=\"AuthBox-text\">Get a login code emailed to you</div>\n <form class=\"AuthFormLogin\" action='https://cystack.cloudflareaccess.com/cdn-cgi/access/verify-code/blog.cystack.org?kid=d08cc312d3580268df3aca24cb4f4b746aa558ed0a384cb4d73dd768eb0201f7&redirect_url=%2Fwp-json%2Frankmath%2Fv1%2FgetHead%3Furl%3Dhttps%3A%252F%252Fblog.cystack.org%252Fblog%252F2023%252F04%252F25%252Fperformance-testing-tools%252F&meta=eyJraWQiOiIxMzJmN2JjMzVmYzMyNGUwMzVmNmNhNzI5NjdkM2Q5Mzk2YTM1MzlhMGRjZmMzYWE0ZWNlYzA3OWQ4MjQyNDc1IiwiYWxnIjoiUlMyNTYiLCJ0eXAiOiJKV1QifQ.eyJzZXJ2aWNlX3Rva2VuX3N0YXR1cyI6dHJ1ZSwiaWF0IjoxNzYwNjA2NjI0LCJzZXJ2aWNlX3Rva2VuX2lkIjoiMDM0MzRlNmMtYzM1Yi00YWUzLWE4NmUtYmY2NGY5M2M0YmI4IiwiYXVkIjoiZDA4Y2MzMTJkMzU4MDI2OGRmM2FjYTI0Y2I0ZjRiNzQ2YWE1NThlZDBhMzg0Y2I0ZDczZGQ3NjhlYjAyMDFmNyIsImhvc3RuYW1lIjoiYmxvZy5jeXN0YWNrLm9yZyIsImFwcF9zZXNzaW9uX2hhc2giOiJhMDQ3Y2JiNDhhNzZiZTMxZmU0NmY2ZDQ5N2RjZTllMWZiYTg4M2M2MGZmZTEzMTJmNmI1ZWQyNzY3ZDZlN2MwIiwibmJmIjoxNzYwNjA2NjI0LCJpc193YXJwIjpmYWxzZSwiaXNfZ2F0ZXdheSI6ZmFsc2UsInR5cGUiOiJtZXRhIiwicmVkaXJlY3RfdXJsIjoiXC93cC1qc29uXC9yYW5rbWF0aFwvdjFcL2dldEhlYWQ_dXJsPWh0dHBzOiUyRiUyRmJsb2cuY3lzdGFjay5vcmclMkZibG9nJTJGMjAyMyUyRjA0JTJGMjUlMkZwZXJmb3JtYW5jZS10ZXN0aW5nLXRvb2xzJTJGIiwibXRsc19hdXRoIjp7ImNlcnRfaXNzdWVyX3NraSI6IiIsImNlcnRfcHJlc2VudGVkIjpmYWxzZSwiY2VydF9zZXJpYWwiOiIiLCJjZXJ0X2lzc3Vlcl9kbiI6IiIsImF1dGhfc3RhdHVzIjoiTk9ORSJ9LCJhdXRoX3N0YXR1cyI6Ik5PTkUifQ.q-5laD1ta3xnbnr-bWMeSPG2iHMf1kTmW1ytqoDwfUmCDK93vES--SGthOPAfvaEFZqipZVffXOMTVcjMXSghokJrIM1RrvucXOvYcCDKUwU0_EF1vkOD1L01Q4F9dMbmCy_qbT5Lo8BXd6KmJ_hmmOcIQAQvT39mIXOI8Z8SzAsoWCler8mW7G9_sSx2cstz-uM_Yx1DQN-uJ6Vl5891WDR3ZyXVvToxqUXrCXCqpCVVO-X-J2cIdnTDjFhuRKupXruNqop5eFPGu5fXFeQ9n5JWnAer_1dwUAGON_9oG3yCn59fYu1cISymU8Nr18qy5JH4TvpUkeUcs4dOzw0cA' method=\"post\" id=\"totp-form\">\n <div class=\"AuthFormLogin-row\">\n <label>Email</label>\n <input class=\"StandardInput StandardInput-is-block EmailInput\" type=\"email\" required\n placeholder=\"example@email.com\" spellcheck=\"false\" autocomplete=\"off\" autocapitalize=\"none\"\n autofocus name=\"email\">\n <input hidden type=\"text\" name=\"client_id\" value=''>\n <input hidden type=\"text\" name=\"connector_id\" value=''>\n <input hidden type=\"text\" name=\"connector_type\" value=''>\n <input hidden type=\"text\" name=\"redirect_url\" value=''>\n </div>\n <div class=\"AuthFormLogin-row\">\n <button type=\"submit\" form=\"totp-form\" class=\"Button Button-is-block Button-is-juicy Button-uses-org-theme-accent-color\">\n Send me a code\n </button>\n </div>\n </form>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n <div class=\"base_TeamsLogo\">\n <svg width=\"275\" height=\"32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" src=\"../images/zt_logo_white.svg\"><g clip-path=\"url(#clip0_51_956)\" fill=\"#fff\"><path d=\"M45.4 13.343c-.382-2.173-2.103-3.416-4.318-3.416-2.97 0-5.061 2.279-5.061 6.375 0 4.168 2.102 6.375 5.053 6.375 2.17 0 3.907-1.198 4.325-3.324l3.316.016c-.507 3.466-3.368 6.259-7.686 6.259-4.787 0-8.316-3.466-8.316-9.326s3.573-9.325 8.316-9.325c4.026 0 7.127 2.338 7.686 6.374l-3.316-.008zM54.43 25.373h-3.21V7.216h3.21v18.157zM56.767 18.617c0-4.22 2.535-7.04 6.527-7.04 3.991 0 6.524 2.82 6.524 7.04 0 4.22-2.535 7.021-6.524 7.021s-6.527-2.811-6.527-7.02zm9.796 0c0-2.494-1.08-4.488-3.253-4.488-2.174 0-3.288 1.995-3.288 4.488 0 2.494 1.08 4.467 3.288 4.467 2.207 0 3.253-1.986 3.253-4.475v.008zM80.834 11.756h3.208v13.617h-3.111v-2.42h-.142c-.62 1.524-2.055 2.596-4.094 2.596-2.678 0-4.54-1.84-4.54-5.124v-8.671h3.208v8.172c0 1.729 1.03 2.82 2.572 2.82 1.42 0 2.89-1.028 2.89-3.104l.009-7.886zM86.407 18.58c0-4.538 2.473-7.002 5.62-7.002 2.402 0 3.403 1.445 3.892 2.43h.134V7.216h3.216v18.157h-3.153v-2.147h-.194c-.505.993-1.561 2.386-3.9 2.386-3.213 0-5.615-2.543-5.615-7.032zm9.707-.015c0-2.644-1.136-4.354-3.2-4.354-2.137 0-3.236 1.818-3.236 4.354 0 2.535 1.117 4.414 3.235 4.414 2.05 0 3.2-1.773 3.2-4.414zM109.223 14.237h-2.827v11.136h-3.211V14.237h-2.01v-2.48h2.01v-1.288c0-2.746 1.889-4.105 4.257-4.105a8 8 0 0 1 2.438.373l-.649 2.484a4.062 4.062 0 0 0-1.196-.195c-1.198 0-1.639.594-1.639 1.656v1.074h2.827v2.48zM114.576 25.373h-3.211V7.216h3.211v18.157zM116.859 21.552c0-3.069 2.528-3.857 5.169-4.14 2.402-.264 3.369-.303 3.369-1.225v-.053c0-1.337-.815-2.102-2.305-2.102-1.576 0-2.473.788-2.793 1.729l-2.996-.426c.71-2.483 2.907-3.76 5.781-3.76 2.599 0 5.531 1.083 5.531 4.68v9.115h-3.084V23.5h-.105c-.586 1.142-1.864 2.144-4 2.144-2.607.002-4.567-1.417-4.567-4.092zm8.545-1.05v-1.606c-.415.336-2.102.549-2.943.665-1.434.204-2.506.717-2.506 1.95 0 1.18.956 1.791 2.294 1.791 1.934-.013 3.155-1.298 3.155-2.814v.013zM131.467 11.756h3.111v2.268h.142a3.412 3.412 0 0 1 3.36-2.465c.386.001.771.031 1.151.09v2.953a6.074 6.074 0 0 0-1.487-.186c-1.766 0-3.069 1.221-3.069 2.95v8.007h-3.208V11.756zM139.841 18.643c0-4.204 2.544-7.065 6.446-7.065 3.35 0 6.222 2.102 6.222 6.879v.985h-9.486c.026 2.331 1.401 3.695 3.477 3.695 1.382 0 2.446-.602 2.89-1.755l2.998.338c-.567 2.366-2.748 3.918-5.923 3.918-4.115 0-6.624-2.722-6.624-6.995zm9.594-1.366c-.019-1.84-1.262-3.198-3.104-3.198-1.915 0-3.2 1.461-3.297 3.198h6.401zM161.474 23.323l9.31-13.348h-9.362v-2.76h13.438v2.05l-9.3 13.357h9.355v2.759h-13.441v-2.058zM176.628 18.643c0-4.204 2.546-7.065 6.446-7.065 3.35 0 6.222 2.102 6.222 6.879v.985h-9.494c.029 2.331 1.403 3.695 3.477 3.695 1.382 0 2.446-.602 2.89-1.755l2.998.338c-.567 2.366-2.748 3.918-5.922 3.918-4.108 0-6.617-2.722-6.617-6.995zm9.594-1.366c-.019-1.84-1.259-3.198-3.104-3.198-1.915 0-3.2 1.461-3.297 3.198h6.401zM191.259 11.756h3.114v2.268h.142a3.398 3.398 0 0 1 3.358-2.465c.386.002.772.031 1.154.09v2.953a6.115 6.115 0 0 0-1.49-.187c-1.764 0-3.067 1.222-3.067 2.951v8.007h-3.211V11.756zM199.26 18.617c0-4.22 2.536-7.04 6.525-7.04 3.989 0 6.524 2.82 6.524 7.04 0 4.22-2.535 7.021-6.524 7.021s-6.525-2.811-6.525-7.02zm9.796 0c0-2.494-1.082-4.488-3.253-4.488-2.17 0-3.29 1.995-3.29 4.488 0 2.494 1.083 4.467 3.29 4.467 2.208 0 3.253-1.986 3.253-4.475v.008zM217.064 7.216h14.484v2.759h-5.61v15.398h-3.264V9.975h-5.61v-2.76zM232.024 11.756h3.111v2.268h.142a3.412 3.412 0 0 1 3.361-2.465c.385.001.77.031 1.15.09v2.953a6.081 6.081 0 0 0-1.489-.186c-1.764 0-3.067 1.221-3.067 2.95v8.007h-3.208V11.756zM249.855 11.756h3.209v13.617h-3.112v-2.42h-.152c-.62 1.524-2.057 2.596-4.097 2.596-2.675 0-4.538-1.84-4.538-5.124v-8.671h3.209v8.172c0 1.729 1.03 2.82 2.572 2.82 1.419 0 2.891-1.028 2.891-3.104l.018-7.886zM263.448 15.674c-.247-.896-1.027-1.702-2.507-1.702-1.34 0-2.365.638-2.349 1.56 0 .789.539 1.267 1.924 1.577l2.323.496c2.569.56 3.82 1.748 3.828 3.68 0 2.58-2.412 4.343-5.815 4.343-3.342 0-5.445-1.482-5.841-3.981l3.127-.302c.276 1.224 1.232 1.863 2.704 1.863 1.526 0 2.535-.702 2.535-1.632 0-.77-.583-1.277-1.839-1.55l-2.323-.49c-2.628-.54-3.839-1.852-3.829-3.838 0-2.518 2.223-4.13 5.505-4.13 3.19 0 5.035 1.47 5.479 3.775l-2.922.331zM275.367 14.237h-2.685v7.04c0 1.295.646 1.576 1.453 1.576.317-.004.633-.047.941-.126l.541 2.51a6.44 6.44 0 0 1-1.889.317c-2.41.074-4.273-1.187-4.254-3.75v-7.57h-1.935v-2.48h1.935V8.49h3.208v3.264h2.685v2.483zM5.255 15.742c1.9-.107 2.665-.935 2.665-3.116V3.992a13.401 13.401 0 0 1-5.292 1.962L0 6.322v9.42h5.255zM7.92 20.446c0-2.286-.846-3.085-2.956-3.127H.113c.754 6.075 4.911 10.122 7.807 12.248v-9.12zM21.644 5.954a13.367 13.367 0 0 1-7.22-3.458L12.128 0 9.86 2.483c-.026.026-.15.153-.363.34v9.882c.019 2.12.789 2.93 2.66 3.037h6.43l-2.589-2.585 1.117-1.114 4.488 4.488-4.488 4.49-1.117-1.114 2.589-2.588H12.45c-2.086.042-2.935.823-2.954 3.048v10.248c.705.434 1.18.673 1.267.715l1.374.67 1.372-.67c.439-.215 10.773-5.381 10.773-15.974V6.33l-2.638-.376z\"/></g><defs><clipPath id=\"clip0_51_956\"><path fill=\"#fff\" d=\"M0 0h275v32H0z\"/></clipPath></defs></svg>\n </div>\n\n <script>\"use strict\";if(document.addEventListener(\"keyup\",function(e){if(\"BODY\"===e.target.nodeName&&e.key>=1&&e.key<=10){var t=document.getElementById(\"idp\"+e.key);window.location=t.getAttribute(\"href\")}},!1),\"\"!==fragment&&fragment.length<100){var services=get(\".js-idp\")||[];services.map(function(e){return e.href=addFragmentToURLState(e.href),e})}</script>\n </body>\n\n</html>"